package queue

import "sort"

type queueType string

const (
	Simple   queueType = "simpleQueue"
	Priority           = "priorityQueue"
)

// Queue is the data-structures with FIFO(First In First Out) mode
type Queue interface {
	Size() int
	IsEmpty() bool
	Dequeue() interface{}
	Enqueue(interface{})
}

type PriorityQueue interface {
	Queue
	sort.Interface
}

func NewQueue(qt queueType) Queue {
	switch qt {
	case Simple:
		return &simpleQueue{}
	case Priority:
		return nil
	default:
		return nil
	}
}
